﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace KATAJAVI_SIA
{
    public partial class ConsultarClientes : Form
    {
        KATAJAVI call = new KATAJAVI();
        DataClassesDataContext BEDE = new DataClassesDataContext();
        IEnumerable<CLIENTE> lista1;
        IEnumerable<MOTO> lista2;

        public ConsultarClientes()
        {
            InitializeComponent();
        }

        private void NoVacios()
        {
            if (dgv_Clientes.RowCount == 0)
            {
                tbx_BusquedaDato.Enabled = false;
                btn_BuscarCliente.Enabled = false;
                button1.Enabled = false;
            }
        }

        private void Llenar()
        {
            lista1 = BEDE.CLIENTE.Where(a => a.softdelete == 1);
            lista2 = BEDE.MOTO;
            foreach (CLIENTE aux in lista1)
            {
                int aaa = 0;
                foreach (MOTO aux2 in lista2)
                {
                    if (aux2.rut_cliente == aux.rut_cliente) { aaa++; }
                }
                dgv_Clientes.Rows.Add(aux.rut_cliente.ToString(), aux.nombre, aux.fono.ToString(), aux.direccion, aaa);
            }
        }

        private void ConsultarUsuarios_Load(object sender, EventArgs e)
        {
            Llenar();
            NoVacios();
        }

        private int FiltrarGrid(string buscado)
        {
            dgv_Clientes.Rows.Clear();
            lista1 = BEDE.CLIENTE.Where(a => a.softdelete == 1);
            lista2 = BEDE.MOTO;
            int aa = 0;
            foreach (CLIENTE aux in lista1)
            {
                if (aux.rut_cliente.ToString().Contains(buscado) | aux.nombre.Contains(buscado))
                {
                    int aaa = 0;
                    foreach (MOTO aux2 in lista2)
                    {
                        if (aux2.rut_cliente == aux.rut_cliente) { aaa++; }
                    }
                    dgv_Clientes.Rows.Add(aux.rut_cliente.ToString(), aux.nombre, aux.fono.ToString(), aux.direccion, aaa);
                    aa++;
                }
            }
            if (aa == 0) { return 0; }
            else { return 1; }
        }

        private void btn_BuscarCliente_Click(object sender, EventArgs e)
        {
            if (tbx_BusquedaDato.Text.Length >= 3)
            {
                tbx_BusquedaDato.Text = tbx_BusquedaDato.Text.Trim();
                int a = call.BuscarEnGrid(tbx_BusquedaDato.Text, dgv_Clientes);
                if (a == 0)
                {
                    int b = FiltrarGrid(tbx_BusquedaDato.Text.Trim());
                    if (b == 0)
                    {
                        MessageBox.Show("No se encontro ningun usuario asociado al dato indicado.", "RESULTADO DE LA BUSQUEDA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                    else { MessageBox.Show("No se encontró un resultado preciso. Se filtraron los registros, usando la cadena indicada como referencia.", "BUSQUEDA FILTRADA.", MessageBoxButtons.OK, MessageBoxIcon.Information); }
                }
            }
            else
            {
                if (tbx_BusquedaDato.Text == "") { errorProvider1.SetError(tbx_BusquedaDato, "Ingrese un dato para iniciar la búsqueda."); }
                else { errorProvider1.SetError(tbx_BusquedaDato, "El texto ingresado es muy corto para una búsqueda efectiva.\n(Se requieren mínimo 3 caracteres para la busqueda)."); }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dgv_Clientes.Rows.Clear();
            Llenar();
        }

        private void tbx_ClienteBusquedaDato_TextChanged(object sender, EventArgs e)
        {
            if (tbx_BusquedaDato.Text.Length >= 3) { errorProvider1.Clear(); }
            if (tbx_BusquedaDato.Text == "")
            {
                dgv_Clientes.Rows.Clear();
                Llenar();
            }
        }
    }
}
